package outros;

import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;

/*
 * Classe utilizada para limitar quantidade de caracteres, assim como
 * aceitar somente números ou não.
*/

public class Documento extends PlainDocument {
    private Util util = new Util();
    private boolean numero;
    private int tamanho;
    private boolean maiusculas;
    private boolean moeda;

    public Documento(boolean numero, int tamanho, boolean maiusculas, boolean moeda) {
        super();
        this.numero = numero;
        this.tamanho = tamanho;
        this.maiusculas = maiusculas;
        this.moeda = moeda;
    }

    public Documento(boolean numero, int tamanho, boolean maiusculas) {
        super();
        this.numero = numero;
        this.tamanho = tamanho;
        this.maiusculas = maiusculas;
        this.moeda = false;
    }

    public Documento(boolean numero, int tamanho) {
        super();
        this.numero = numero;
        this.tamanho = tamanho;
        this.maiusculas = false;
        this.moeda = false;
    }

    @Override
    public void insertString(int off, String str, AttributeSet att) throws BadLocationException {
        if (numero) {
            for (char c:str.toCharArray()) {
                if(!Character.isDigit(c)) {
                    return;
                }
            }
        }
        if (str==null) {
            return;
        }
        if (tamanho <= 0) {
            super.insertString(off, str, att);
            return;
        }
        int temp = (getLength()+str.length());
        if (temp <= tamanho) {
            if (maiusculas) {
                str = str.toUpperCase();
            }
            super.insertString(off, str, att);
        }
    }
}
